home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / mfwrite.zip / WRITE.DOC < prev   
Text File  |  1990-10-25  |  5KB  |  125 lines

  1. Write sends a string to standard output (much like the `echo' command), with
  2. a few extras.
  3.  
  4. When called without parameters, it displays the following help message:
  5.  
  6.  
  7. write.com version 1.1, Markus G. Fischer, Oct. 1990
  8.  
  9. usage: write <string>
  10.        Outputs <string> to standard output, without a CR-LF sequence.
  11.        Meta-strings in the form $c are expanded much like in the `prompt'
  12.        (the differences are marked with a `*', unknown codes are skipped).
  13.  
  14.        $  the `$' character                g  the `>' character
  15.      * t  time up to the seconds           l  the `<' character
  16.      * d  date without day of the week     b  the `|' character
  17.        p  current logical directory        q  the `=' character
  18.      * r  current physical directory       h  the backspace character
  19.        n  default drive letter             e  the escape character
  20.      * v  volume label                   * f  the form-feed character
  21.      * ^c CTRL-c (if '@' <= c <= '_')      _  the CR LF sequence
  22.  
  23.  
  24. Bug: `$^J' sends the CR-LF sequence, not just the LF.
  25.  
  26. The program is released under the `free-source-ware' concept.  No fee,
  27. unrestricted distribution of unmodified executable and source.
  28. Bugs, comments, updates, etc. should be send to "fisher@sc2a.unige.ch".
  29.  
  30.  
  31. I think there is not much to add, exept maybe a few examples... (Since I wrote
  32. this program, I found many different applications for it.)
  33.  
  34. Possible uses:
  35. - Date-and-time stamps to log files
  36. - Printer control (write $eE>LPT1)
  37. - Automatic program execution (write <keys>|program, the sequence `$^@;' would
  38.   even simulate the <F1> key !)
  39. - Aliases involving the display of the current directory, the volume label,
  40.   the time or the date
  41. - Batch-file ``tricks'' to push and pop the directory, for example
  42.  
  43. The original idea was to replace DOS's `echo', because I didn't want the CR-LF
  44. sequence added at the end.  At that time I had to download several soft fonts
  45. on a LaserJet, which didn't contain a logical font-number.  The batch file
  46. looked somthing like this :
  47.  
  48. @echo off
  49. echo Helvetica: orientation portrait, taille 10 points, mode normal.
  50. echo ^[*c58D^[*c5F > LPT1
  51. copy \HPFONTS\Helv10n.HP/b LPT1:/b > NUL
  52. echo ^[*c58D^[*c5F > LPT1
  53. [...]
  54.  
  55. It worked fine, but each echo ...>LPT1 caused a CR-LF sequence to be sent
  56. to the printer...  resulting in one or two empty sheets of paper.
  57. Also, I never like control characters in a batch file, they aren't always
  58. displayed the same way.  What's more, I couldn't send a `echo ^[E>LPT1'
  59. (printer reset), as the <Esc> killed my command line.  Thus the write program,
  60. largely inspired by the `prompt' syntax.  (i.e. `$e' -> <Esc>...)
  61. The batch was changed to something like this:
  62.  
  63. @echo off
  64. echo Helvetica: orientation portrait, taille 10 points, mode normal.
  65. write $e*c58D$e*c5F > LPT1
  66. copy \HPFONTS\Helv10n.HP/b LPT1:/b > NUL
  67. write $e*c58D$e*c5F > LPT1
  68. [...]
  69. write $eE
  70.  
  71. A few days later, I changed my `eject.bat' to a simple alias: `write ^L>LPT1',
  72. my `t.bat' (display time and date) to another alias: `write $t  $d', and so
  73. forth.  Another file processing batch file got a new line `write .' (display
  74. dots _on_the_same_line_ as you process), and of course, `write $e[1m', or
  75. other ansi sequences became simpler and could be isolated on separate lines.
  76.  
  77. The same `write' could be used to add time & date stamps to a log file,
  78. display the `cwd' from a batch file, etc.
  79.  
  80. The next application I found involves the `push' and `pop' or directories,
  81. as I profoundly dislike having too many resident programs active at the
  82. same time.  Here an example (assuming %tmp% points to your tmp diectory, i.e.
  83. a ram-drive) :
  84.  
  85. @echo off
  86. write @echo off$_$n:$_cd $p$_del %tmp%popdir.bat > %tmp%popdir.bat
  87. X:
  88. cd \needed.dir
  89. rem *** processing ***
  90. call %tmp%popdir
  91. rem *** closing message ***
  92.  
  93. The %tmp%popdir.bat contains something like:
  94. @echo off
  95. C:
  96. cd C:\CURRENT\SUBDIR
  97. del D:\popdir.bat
  98.  
  99. In other words, you can easily write a batch from within a batch, and
  100. `call' it when needed...  If you use a ram-drive, it is quite fast, too.
  101. Another example is `toc.bat' that I use to switch from the directory of
  102. a subst'ituted drive to the same directory (the real one) on drive C::
  103.  
  104. @ write @C:$_@cd $r$_@del %TMP%~toc~.bat>%TMP%~toc~.bat
  105. @ %TMP%~toc~.bat
  106.  
  107. (figure it out for yourself)
  108.  
  109. Finally, I added the options `$f' (form feed) and `$^?' (control characters)
  110. to completely banish the typing of control characters from the command line
  111. and to allow full control of programs reading standard input.
  112.  
  113. Well, that's enough examples, you will certainly find your own applications.
  114. write Logical Dir  : $p$_Physical Dir : $r$_Volume Name  : $v$_
  115.  
  116. Markus Fischer
  117. University of Geneva
  118. Department of Anthropology
  119. 12, rue Gustave Revilliod
  120. 1227 CAROUGE (Geneve)
  121. Switzerland
  122.  
  123. <fisher@sc2a.unige.ch>
  124. <fisher@cgeuge52.bitnet>
  125.